Estudio sobre los lenguajes de programación para la robótica (página 2)
3. Lenguajes de programación
A continuación se realiza
una descripción de los lenguajes de
programación más usados en la robótica.
Gestual Punto A Punto
Se aplican con el robot "in situ", recordando a las normas de
funcionamiento de un magnetófono doméstico, ya que
disponen de unas instrucciones similares: PLAY (reproducir),
RECORD (grabar), FF (adelantar), FR (atrasar), PAUSE, STOP, etc.
Además, puede disponer de instrucciones auxiliares, como
INSERT (insertar un punto o una operación de trabajo) y
DELETE (borrar). Este manipulador en línea funciona como
un digitalizador de posiciones.
Los lenguajes más conocidos en programación gestual punto a punto son el
FUNKY, creado por IBM para uno de sus robots, y el T3, original
de CINCINNATI MILACROM para su robot T3. Los movimientos pueden
tener lugar en sistemas de
coordenadas cartesianas, cilíndricas o de unión,
siendo posible insertar y borrar las instrucciones que se desee.
Es posible, también, implementar funciones
relacionadas con sensores
externos, así como revisar el programa paso a
paso, hacia delante y hacia atrás.En el lenguaje
FUNKY se usa un mando del tipo "joystick", que dispone de un
comando especial para centrar a la pinza sobre el objeto para el
control de los
movimientos, mientras que el T3 dispone de un dispositivo de
enseñanza ("teach pendant").
El procesador usado
en T3 es el AMD 2900 ("bit slice"), mientras que en el FUNKY
está constituido por el IBM
SYSTEM-7.
A nivel de movimientos elementales.
Los movimientos de punto a punto también se expresan en
forma de lenguaje:
- ANORAD
- EMILY
- RCL
- RPL
- SIGLA
- VAL
- MAL
Todos ellos mantienen el énfasis en los
movimientos primitivos, ya sea en coordenadas articulares, o
cartesianas. En comparación, tienen, como ventajas
destacables, los saltos condicionales y a subrutina,
además de un aumento de las operaciones con
sensores,
aunque siguen manteniendo pocas posibilidades de programación "off-line".
Estos lenguajes son, por lo general, del tipo intérprete,
con excepción del RPL, que tiene un compilador. La
mayoría dispone de comandos de
tratamiento a sensores básicos: tacto, fuerza,
movimiento,
proximidad y presencia. El RPL dispone de un sistema complejo
de visión, capaz de seleccionar una pintura y
reconocer objetos presentes en su base de
datos.
Los lenguajes EMILY y SIGLA son transportables y admiten
el proceso en
paralelo simple.
Otros datos
interesantes de este grupo de
lenguajes son los siguientes:
ANORAD
Se trata de una transformación de un lenguaje de
control
numérico de la casa ANORAD CORPORATION, utilizado para
robot ANOMATIC. Utiliza, como procesador, al
microprocesador
68000 de Motorola de 16/32 bits.
VAL
Fue diseñado por UNIMATION INC para sus robots UNIMATE y
PUMA. (FIG. 1) Emplea, como CPU, un
LSI-II, que se comunica con procesadores
individuales que regulan el servocontrol de cada
articulación. Las instrucciones, en idioma inglés,
son sencillas e intuitivas, como se puede apreciar por el
programa
siguiente:
LISPT
PROGRAM PICKUP
1. APRO PART, 25.0
2. MOVES PART
3. CLOSE, 0.0.0
4. APRO PART, -50.0
5. APRO DROP, 100.0
6. MOVES DROP
7. OPEN, 0.0.0
8. APRO DROP, -100.0
END
RPL
Dotado con un LSI-II como procesador central, y aplicado a los
robots PUMA, ha sido diseñado por SRI
INTERNATIONAL.
EMILY
Es un lenguaje creado por IBM para el control de uno de sus
robots. Usa el procesador IBM 370/145 SYSTEM 7 y está
escrito en Ensamblador.
SIGLA
Desarrollado por OLIVETTI para su robot SUPER SIGMA, emplea un
mini-ordenador con 8 K de memoria. Escrito
en Ensamblador,
es del tipo intérprete.
MAL
Se ha creado en el Politécnico de Milán para el
robot SIGMA, con un Mini-multiprocesador. Es un lenguaje del tipo
intérprete, escrito en FORTRAN.
RCL
Aplicado al robot PACS y desarrollado por RPI, emplea, como
CPU, un PDP
11/03. Es del tipo intérprete y está escrito en
Ensamblador.
Estructurados De
Programación Explícita
Teniendo en cuenta las importantísimas características que presenta este tipo de
programación, merecen destacarse los siguientes
lenguajes:
- AL
- HELP
- MAPLE
- PAL
- MCL
- MAL EXTENDIDO
Con excepción de HELP, todos los lenguajes de
este grupo
están provistos de estructuras de
datos del tipo
complejo. Así, el AL utiliza vectores,
posiciones y transformaciones; el PAL usa, fundamentalmente,
transformaciones y el MAPLE permite la definición de
puntos, líneas, planos y posiciones. Sólo el PAL, y
el HELP carecen de capacidad de adaptación sensorial. Los
lenguajes AL, MAPLE y MCL, tienen comandos para el
control de la sensibilidad del tacto de los dedos (fuerza,
movimiento,
proximidad, etc.). Además, el MCL posee comandos de
visión para identificar e inspeccionar objetos.
A continuación, se exponen las características más representativas
de los lenguajes dedicados a la programación
estructurada.
AL
Trata de proporcionar definiciones acerca de los movimientos
relacionados con los elementos sobre los que el brazo trabaja.
Fue diseñado por el laboratorio de
Inteligencia
Artificial de la Universidad de
Stanford, con estructuras de
bloques y de control similares al ALGOL, lenguaje en el que se
escribió. Está dedicado al manipulador de Stanford,
utilizando como procesadores
centrales, a un PDP 11/45 y un PDP KL-10.
HELP
Creado por GENERAL ELECTRIC para su robot ALLEGRO y escrito en
PASCAL/FORTRAN, permite el movimiento
simultáneo de varios brazos. Dispone, asimismo, de un
conjunto especial de subrutinas para la ejecución de
cualquier tarea. Utilizando como CPU, a un PDP 11.
MAPLE
Escrito, como intérprete, en lenguaje PL-1, por IBM para
el robot de la misma empresa, tiene
capacidad para soportar informaciones de sensores externos.
Utiliza, como CPU a un IBM 370/145 SYSTEM 7.
PAL
Desarrollado por la Universidad de
Purdure para el manipulador de Stanford, es un intérprete
escrito en FORTRAN y Ensamblador, capaz de aceptar sensores de
fuerza y de visión. Cada una de sus instrucciones, para
mover el brazo del robot en coordenadas cartesianas, es procesada
para que satisfaga la ecuación del procesamiento. Como
CPU, usan un PDP 11/70.
MCL
Lo creó la compañía MC DONALL DOUGLAS, como
ampliación de su lenguaje de control numérico APT.
Es un lenguaje compilable que se puede considerar apto para la
programación de robots "off-line".
MAL EXTENDIDO
Procede del Politécnico de Milán, al igual que el
MAL, al que incorpora elementos de programación
estructurada que lo potencian notablemente. Se aplica,
también, al robot SIGMA.
Especificativa a
nivel objeto.
En este grupo se encuentran tres lenguajes
interesantes:
- RAPT
- AUTOPASS
- LAMA
RAPT
Su filosofía se basa en definir una serie de planos,
cilindros y esferas, que dan lugar a otros cuerpos derivados.
Para modelar a un cuerpo, se confecciona una biblioteca con
sus rasgos más representativos. Seguidamente, se define
los movimientos que ligan a los cuerpos a ensamblar (alinear
planos, encajar cilindros, etc.).
Así, si se desea definir un cuerpo C1, se comienza
definiendo sus puntos más importantes, por ejemplo:
P1 = < x, 0, 0 >
P2 = < 0, y, 0 >
P3 = < x/2, y, 0 >
P4 = < 0, 0, z >
Si, en el cuerpo, existen círculos de interés,
se especifican seguidamente:
C1 = CIRCLE/P2, R;
C2 = CIRCLE/P4, R;
A continuación, se determinan sus aristas:
L1 = L/P1, P2;
L2 = L/P3, P4;
Si, análogamente al cuerpo C1, se define otro, como el C2,
una acción entre ambos podría consistir en colocar
la cara inferior de C1 alineada con la superior de C2. Esto se
escribiría.
AGAINST / BOT / OF C1, TOP / OF C2;
El lenguaje
RAPT fue creado en la Universidad de Edimburgo, departamento de
Inteligencia
Artificial; está orientado, en especial, al ensamblaje de
piezas. Destinado al robot FREDY, utiliza, como procesador
central, a un PDP 10. Es un intérprete y está
escrito en lenguaje APT.
AUTOPASS
Creado por IBM para el ensamblaje de piezas; utiliza
instrucciones, muy comunes, en el idioma inglés.
Precisa de un ordenador de varios Megabytes de capacidad de
memoria y,
además de indicar, como el RAPT, puntos
específicos, prevé, también, colisiones y
genera acciones a
partir de las situaciones reales.
Un pequeño ejemplo, que puede proporcionar una idea de la
facilidad de relacionar objetos, es el programa siguiente, que
coloca la parte inferior del cuerpo C1 alineada con la parte
superior del cuerpo C2. Asimismo, alinea los orificios A1 y A2 de
C1, con los correspondientes de C2.
PLACE C1
SUCH THAT C1 BOT CONTACTS C2TOP
AND B1 A1 IS ALIGNED WITH C2A1
AND B1 A2 IS ALIGNED WITH C2A2
El AUTOPASS realiza todos sus cálculos sobre una base de datos,
que define a los objetos como poliedros de un máximo de
20,000 caras. Está escrito en PL/1 y es intérprete
y compilable.
LAMA
Procede del laboratorio de
Inteligencia
Artificial del MIT, para el robot SILVER, orientándose
hacia el ajuste de conjuntos
mecánicos. Aporta más inteligencia
que el AUTOPASS y permite una buena adaptación al entorno.
La operatividad del LAMA se basa en tres funciones
principales:
- Creación de la función
de trabajo. Operación inteligente. - Generación de la función
de manipulación. - Interpretación y desarrollo,
de una forma interactiva, de una estrategia de
realimentación para la adaptación al entorno de
trabajo.
En función de
los objetivos.
La filosofía de estos lenguajes consiste en definir la
situación final del producto a
fabricar, a partir de la cual se generan los planes de
acción tendentes a conseguirla, obteniéndose,
finalmente, el programa de trabajo. Estos lenguajes, de tipo
natural, suponiendo una potenciación extraordinaria de la
Inteligencia Artificial, para descargar al usuario de las labores
de programación. Prevén, incluso, la
comunicación hombre-máquina a través de la
voz.
Los lenguajes más conocidos de este grupo son:
- STRIPS
- HILAIRE
STRIPS
Fue diseñado, en la Universidad de Stanford, para el robot
móvil SHAKEY. Se basa en un modelo del
universo
ligado a un conjunto de planteamientos
aritmético-lógicos que se encargan de obtener las
subrutinas que conforman el programa final. Es intérprete
y compilable, utilizando, como procesadores, a un PDP-10 y un
PDP-15.
HILAIRE
Procedente del laboratorio de Automática Y Análisis de
Sistemas (LAAS) de Toulouse, está escrito en lenguaje
LISP. Es uno de los lenguajes naturales más interesantes,
por sus posibilidades de ampliación e investigación.
Es mucho lo que se ha hecho en el área de la
programación para la robótica;
sin embargo aún no existe un lenguaje ideal para la
programación de los robots. Son muchos los lenguajes
creados hasta ahora, en parte las causas principales de esta
amplia gama de lenguajes inadecuados o poco efectivos son:
Cada lenguaje se ha diseñado tomando como base un robot en
específico del mercado, lo que
anula su universalidad y la posibilidad de emplearlo en modelos
diferentes.
Los lenguajes, en muchos casos, se dirigen hacia aplicaciones
diferentes, lo que limita grandemente su utilización para
la programación de otras tareas.
Hoy en el mundo existe un interés
general para lograr un sistema de
percepción del entorno cada vez más
avanzado. Para esto se hace necesaria la ampliación de la
Inteligencia Artificial, que interviene en la valoración
del espacio exterior o entorno y determina los planes de
acción alternativos o lo que es lo mismo la respuesta a la
interacción con ese medio.
Características de un lenguaje ideal para
la robótica
Las seis características básicas de un lenguaje
ideal, expuestas por Pratt, son:
1. Claridad y sencillez.
2. Claridad de la estructura del
programa.
3. Sencillez de aplicación.
4. Facilidad de ampliación.
5. Facilidad de corrección y mantenimiento.
6. Eficacia.
Estas características son insuficientes para la
creación de un lenguaje "universal" de programación
en la robótica, por lo que es preciso añadir las
siguientes:
– Transportabilidad sobre cualquier equipo mecánico o
informático.
– Adaptabilidad a sensores (tacto, visión, etc.).
– Posibilidad de descripción de todo tipo de herramientas
acoplables al manipulador.
– Interacción con otros sistemas.
En el aspecto de claridad y sencillez, la programación
gestual es la más eficaz, pero impide la confección
de programas
propiamente dichos. Los lenguajes a nivel de movimientos
elementales, como el VAL, disponen de bastantes comandos para
definir acciones muy
parecidas que fueron surgiendo según las necesidades y
que, en gran medida, oscurecen su comprensión y conocimiento.
Aunque, inicialmente, las técnicas
de programación estructurada son más
difíciles de dominar, facilitan, extraordinariamente, la
comprensión y corrección de los programas.
Respecto a la sencillez de aplicación, hay algunos
lenguajes (como el MCL) dedicados a las máquinas
herramienta (APT), que pueden ser valorados, positivamente, por
los usuarios conocedores de este campo. El PAL, estructurado
sobre la matemática
matricial, sólo es adecuado para quienes están
familiarizados con el empleo de este
tipo de transformaciones.
Uno de los lenguajes más fáciles de utilizar es el
AUTOPASS, que posee un juego de
comandos con una sintaxis similar a la del ingles corriente.
Es imprescindible que los lenguajes para los robots sean
fácilmente ampliables, por lo que se les debe dotar de una
estructura
modular, con inclusión de subrutinas definidas por el
mismo usuario.
La adaptabilidad a sensores externos implica la posibilidad de
una toma de
decisiones, algo muy interesante en las labores de
ensamblaje. Esta facultad precisa de un modelo
dinámico del entorno, así como de una buena dosis
de Inteligencia Artificial, como es el caso del AUTOPASS.
Aunque los intérpretes son más lentos que los
compiladores, a
la hora de la ejecución de un programa, resultan
más adecuados para las aplicaciones de la robótica.
Las razones son las siguientes:
- El intérprete ejecuta el código como lo encuentra, mientras que el
compilador recorre el programa varias veces, antes de generar
el código ejecutable. - Los intérpretes permiten una ejecución
parcial del programa. - La modificación de alguna instrucción
es más rápida con intérpretes, ya que un
cambio en
una de ellas no supone la compilación de las
demás.
Finalmente, el camino para la superación de los
problemas
propios de los lenguajes actuales ha de pesar, necesariamente,
por la potenciación de los modelos
dinámicos del entorno que rodea al robot,
acompañado de un aumento sustancial de la Inteligencia
Artificial.
Autor:
Mileidys González Prieto
Página anterior | Volver al principio del trabajo | Página siguiente |